package iface.aplicativo.integracao.dao;

import iface.aplicativo.negocio.entidade.Pessoa;
import iface.arquitetura.comum.string.UtilString;
import iface.arquitetura.integracao.HibernateDAOAbstrato;

import java.util.Collection;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

@Repository
public class PessoaDAO extends HibernateDAOAbstrato<Pessoa> {

	public Pessoa consultarPessoaPorCpfCnpj(final String cpfCnpj) {
		Criteria criteria = novoCriteria();

		if (!UtilString.isVazio(cpfCnpj)) {
			criteria.add(Restrictions.eq("cpfCnpj", cpfCnpj).ignoreCase());
		}

		return (Pessoa) criteria.uniqueResult();
	}

	public Collection<Pessoa> consultarFornecedoresPorNome(final String nome) {
		Criteria criteria = novoCriteria();

		if (!UtilString.isVazio(nome)) {
			criteria.add(Restrictions.ilike("nmPessoa", nome, MatchMode.START));
		}

		return this.consultar(criteria);
	}

	public Collection<Pessoa> consultarDespachantesPorNome(final String nome) {
		Criteria criteria = novoCriteria();

		if (!UtilString.isVazio(nome)) {
			criteria.add(Restrictions.ilike("nmPessoa", nome, MatchMode.START));
			criteria.add(Restrictions.eq("indDespachante", "S"));
		}

		return this.consultar(criteria);
	}

}
